package ufc.si.pet.beans;

import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import ufc.si.pet.dao.implementacoes.AdministradorAtividadeJpaDAO;
import ufc.si.pet.dao.interfaces.AdministradorAtividadeDAO;
import ufc.si.pet.entidades.AdministradorAtividade;

@ManagedBean(name="administradorAtividadeBean")
@RequestScoped
public class AdministradorAtividadeBean {

	private AdministradorAtividade administrador;
	private String confirmarSenha;
	private List<AdministradorAtividade> administradores;
	
	public AdministradorAtividadeBean() {
		this.administrador = new AdministradorAtividade();
	}
	
	public String novo(){
		return "admin/cadastro-adminstrador-atividade";
	}
		
	public String salvar(){
			
		FacesContext context = FacesContext.getCurrentInstance();

		AdministradorAtividadeDAO dao = new AdministradorAtividadeJpaDAO();
			
		if(administrador.getId() != 0){
			dao.beginTransaction();
			dao.atualizar(administrador);
			dao.commit();
			dao.close();
			return "";
		}else{
			if(!this.confirmarSenha.equals(this.administrador.getSenha())){
				FacesMessage message = new FacesMessage("A senha não foi confirmada corretamente");
				context.addMessage(null, message);
				return null;
			}
			
			dao.beginTransaction();
			dao.salvar(this.administrador);
			dao.commit();
			dao.close();
			
			return "";
		}
	}

	public String editar(){
		this.confirmarSenha = administrador.getSenha();
		return "cadastro-adminstrador-atividade";
	}
	
	public String excluir(){
		AdministradorAtividadeDAO dao = new AdministradorAtividadeJpaDAO();
		dao.beginTransaction();
		dao.excluir(administrador);
		dao.commit();
		dao.close();
		administradores = null;
		return null;
	}
	
	public AdministradorAtividade getAdministrador() {
		return administrador;
	}

	public void setAdministrador(AdministradorAtividade administrador) {
		this.administrador = administrador;
	}

	public String getConfirmarSenha() {
		return confirmarSenha;
	}

	public void setConfirmarSenha(String confirmarSenha) {
		this.confirmarSenha = confirmarSenha;
	}

	public List<AdministradorAtividade> getAdministradores() {
		
		if(administradores == null){
			AdministradorAtividadeDAO dao = new AdministradorAtividadeJpaDAO();
			administradores = dao.listar();
		}
	
		return administradores;
	}
	
	public void setAdministradores(List<AdministradorAtividade> administradores) {
		this.administradores = administradores;
	}
}
